package api;

import model.Blog;
import model.BlogDao;
import model.User;
import model.UserDao;

import javax.imageio.stream.ImageInputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.concurrent.PriorityBlockingQueue;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-03-24
 * Time: 15:51
 */

// 删除一篇博客
@WebServlet("/delete_blog")
public class BlogDeleteServlet extends HttpServlet {
    // 在博客详情页面中, 点击删除按钮(a 标签) 判读是否删除, 删除成功则重定向到主页面, 返回失败则403
    // 约定前端: GET//delete_blog ?blogId = ?
    // 约定后端: 删除成功 HTTP/1.1 302 Location : blog_list
    //          删除失败 返回错误权限


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //. 获取会话
        resp.setContentType("application/json; charset = utf8");
        req.setCharacterEncoding("utf8");
        HttpSession session = req.getSession(false);
        User user = (User) session.getAttribute("user");
        if(user == null ) {
            resp.getWriter().write("{\"isSuccess\":false}");
            return;
        }
        String blogId = req.getParameter("blogId");
        if(blogId == null) {
            resp.getWriter().write("{\"isSuccess\":false}");
            return;
        }

        // 获取当前blogId 对应的userId
        BlogDao blogDao = new BlogDao();
        Blog blog = blogDao.selectById(Integer.parseInt(blogId));
        if(blog == null) {
            resp.getWriter().write("{\"isSuccess\":false}");
            return;
        }
        // 比较当前这篇博客的 userId 和当前会话的 userId 是否一致
        if(blog.getUserId() != user.getUserId()) {
            resp.getWriter().write("{\"isSuccess\":false}");
            return;
        }
        // 验证正确. 用户确定是否删除
        blogDao.delete(Integer.parseInt(blogId));
        resp.getWriter().write("{\"isSuccess\":true}");

        PriorityBlockingQueue<Blog> queue = new PriorityBlockingQueue<>();



        // 1. 判定是否登陆
//        HttpSession session = req.getSession(false);
//        User user = (User) session.getAttribute("user");
//
//        if(session == null || user == null) {
//            // 当前用户未登陆
//            resp.setStatus(403); // 服务器成功解析, 但客户端没有访问资源权限
//            resp.setContentType("text/html; charset = utf8");
//            resp.getWriter().write("当前用户未登录, 请登陆后在操作!");
//            System.out.println(session + "会话");
//            System.out.println(user + "对象");
//            return;
//        }
//        // 2. 获取到当前请求的 blogId 判断是否为
//        String blogId = req.getParameter("blogId");
//        if(blogId == null) {
//            // 未查到当前 blogId 对应得博客
//            resp.setContentType("text/html; charset = utf8");
//            resp.setStatus(404); // 查询不到资源
//            resp.getWriter().write("当前删除资源不存在");
//            System.out.println(blogId + "不存在");
//            return;
//        }
//        // 3. 查询对应的 blogId 对应的 user
//        BlogDao blogDao = new BlogDao();
//        // 查询指定博客
//        Blog blog = blogDao.selectById(Integer.parseInt(blogId));
//        if(blog == null) {
//            resp.setContentType("text/html; charset = utf8");
//            resp.setStatus(404); // 查询不到资源
//            resp.getWriter().write("当前删除资源不存在");
//            System.out.println("博客不存在");
//            return;
//        }
//        // 4. 查询登陆用户是否为作者本人 (匹配博客作者和登录用户)
//        if(blog.getUserId() != user.getUserId()) {
//            // 匹配不上. 非本人操作
//            resp.setStatus(403); // 服务器成功解析, 但客户端没有访问资源权限
//            resp.setContentType("text/html; charset = utf8");
//            resp.getWriter().write("你当前暂无此权限!");
//            System.out.println("不是本人");
//            return;
//        }
//        // 5. 删除
//        blogDao.delete(Integer.parseInt(blogId));
//        // 6. 重定向 302
//        resp.sendRedirect("blog_list.html");
    }
}
